/**
 * 构造长度为6000的数组，要求：
 * 1. 元素小于等于20000
 * 2. 元素各不相同
 * 3. 两两不互质
 * 4. 所有元素一起公因子为1
 * 显然要用到质数，可以考虑形如 6i, 10i, 15i 的样式，任意两个数不互质，而6/10/15互质即可保证所有数互质
 * 但是注意到中间有重复的元素，因此可能不够20000个
 * 只需要一个奇数即可，为3*5*7*11*13，这是不超过20000的最小的数
 * 然后剩下的全为偶数，且必然是 6i, 10i, 14i, 22i, 26i 之一
 * 于是数量可到6000
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

struct Sieve{ // 线性筛法

using llt = int;
vector<bool> isComp; // isComp[i]表示i是否为合数
vector<llt> primes; // primes[i]是第i个质数
vector<llt> Euler;  // Euler[i]表示i的欧拉函数
vector<int> Mobius; // 莫比乌斯函数

Sieve(int SZ = 35000){
    primes.reserve(SZ);
    isComp.assign(SZ, false);    

    Euler.assign(SZ, 0);
    Euler[1] = 1;
    
    Mobius.assign(SZ, 0);
    Mobius[1] = 1;

    long long tmp;
    for(int i=2;i<SZ;++i){
        if(!isComp[i]){
            primes.push_back(i);
            Euler[i] = i - 1;
            Mobius[i] = -1;
        }

        for(int j=0,n=primes.size();j<n&&(tmp=i*(long long)primes[j])<SZ;++j){
            isComp[tmp] = true;

            if(0 == i % primes[j]){
                Euler[tmp] = Euler[i] * primes[j];
                Mobius[tmp] = 0;
                break;
            }else{
                Euler[tmp] = Euler[i] * (primes[j] - 1);
                Mobius[tmp] = -Mobius[i];
            }
        }
    }
}

}Sie;

int N;
vector<int> Ans;

void proc(){
    vector<int> flag(20001, 0);
    int seed[] = {6, 10, 14, 22, 26};
    Ans.push_back(3*5*7*11*13);
    flag[3*5*7*11*13] = 1;
    for(int i=0;i<5;++i) Ans.push_back(seed[i]), flag[seed[i]] = 1;
    int k = 0;
    int times = 2;
    for(int i=3;i<N;++i){
        auto tmp = seed[k] * times;
        if(tmp > 20000){
            ++k;
            if(k >= 5) break;
            times = 2;
            --i;
        }else{
            if(0 == flag[tmp]){
                flag[tmp] = 1;
                Ans.push_back(tmp);                
            }else{
                --i;
            }
            ++times;
        }
    }
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    cin >> N;
    proc();
    if(Ans.size() > N) Ans.erase(Ans.begin() + N, Ans.end());
    for(auto i : Ans) cout << i << " ";
    cout << endl;

    return 0;
}